﻿namespace NetEasyMusic.Lib.Models;

public class ReportModel
{
    public string RegTime { get; set; } = "";
    public string YearSong { get; set; } = "";
    public string YearSongCount { get; set; } = "";
    public string YearSongId { get; init; } = "";
    public string YearSongPicUrl { get; set; } = "";
    public GenreRank[] GenreRanks { get; init; } = [];
    public Seasons Seasons { get; init; } = new();
    public ReportKeyWord KeyWord { get; init; } = new();
    public string AnnualSong { get; set; } = "";
    public string AnnualSongId { get; init; } = "";
    public string AnnualSongArtist { get; set; } = "";
    public string AnnualSongPicUrl { get; set; } = "";
    public SongModel[] AnnualPlaylist { get; set; } = [];
    public AlbumModel AnnualAlbum { get; init; } = new();
    public AnnualSinger AnnualSinger { get; init; } = new();
    public string AnnualSingerSongs { get; init; } = "";
}

[Serializable]
public class GenreRank
{
    public string GenreTagName { get; set; } = "";
    public string Percent { get; set; } = "";
}

public class Seasons
{
    public SeasonListen Spring { get; set; } = new();
    public SeasonListen Summer { get; set; } = new();
    public SeasonListen Autumn { get; set; } = new();
    public SeasonListen Winter { get; set; } = new();
}

public class SeasonListen
{
    public string SongId { get; set; } = "";

    public string SongName { get; set; } = "";

    public string ArtistId { get; set; } = "";

    public string ArtistName { get; set; } = "";

    public string PicUrl { get; set; } = "";
}

public class ReportKeyWord
{
    public string Keyword { get; set; } = "";

    public LyricListItem[] LyricList { get; set; } = [];
}

[Serializable]
public class LyricListItem
{
    public string SongId { get; set; } = "";

    public string SongName { get; set; } = "";

    public string ArtistId { get; set; } = "";

    public string ArtistName { get; set; } = "";

    public string Lyric { get; set; } = "";
}

public class AnnualSinger
{
    public string ArtistId { get; set; } = "";

    public string SingerName { get; set; } = "";

    public string SingerPicUrl { get; set; } = "";
}